/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package be.cultuurschuur.services;

import be.cultuurschuur.Controllers.*;
import be.cultuurschuur.entity.*;
import be.cultuurschuur.interfaces.*;
import java.io.*;
import java.util.*;
import java.util.logging.*;
import javax.faces.context.*;
import javax.persistence.*;

/**
 *
 * @author Jolien
 */
public class BLGemeente implements GemeenteInterface
{
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("cultuurschuurPU");
    EntityManager em = emf.createEntityManager();
    EntityTransaction tx = em.getTransaction();
    
    private String gemeenteNaam;
    private int postcode;

    public String getGemeenteNaam() {
        return gemeenteNaam;
    }

    public void setGemeenteNaam(String gemeenteNaam) {
        this.gemeenteNaam = gemeenteNaam;
    }

    public int getPostcode() {
        return postcode;
    }

    public void setPostcode(int postcode) {
        this.postcode = postcode;
    }

    @Override
    public Gemeente insertGemeente()
    { 
        tx.begin();
        Gemeente gemeente = new Gemeente();
        gemeente.setGemeenteNaam(gemeenteNaam);
        gemeente.setPostcode(postcode);
        
        em.persist(gemeente);
        tx.commit();
        try {
            FacesContext.getCurrentInstance().getExternalContext().redirect("gemeente.xhtml");
        } catch (IOException ex) {
            Logger.getLogger(VervoerController.class.getName()).log(Level.SEVERE, null, ex);
        }
        return gemeente;
    }
    
    @Override
    public List<Gemeente> getGemeenten()
    {
        return em.createNamedQuery("Gemeente.getAll").getResultList();
    }

    @Override
    public Gemeente getGemeenteById(int gemeenteID)
    {
        Query q = em.createNamedQuery("Gemeente.getById");
        q.setParameter(1, gemeenteID);
        Gemeente gemeente = (Gemeente)q.getSingleResult();
        return gemeente;
        
    }
    @Override
    public Gemeente updateGemeente(Gemeente gemeente)
    {
        tx.begin();

        Gemeente g = em.find(Gemeente.class, gemeente.getId());
        g.setGemeenteNaam(gemeente.getGemeenteNaam());
        g.setPostcode(gemeente.getPostcode());
        
        em.persist(g);

        tx.commit();
        return g;
    }
    @Override
    public boolean deleteGemeente(int id)
    {
        try {
            tx.begin();

            Gemeente g = em.find(Gemeente.class, id);
            em.remove(g);
            tx.commit();
            return true;
        } catch (Exception exc) {
            return false;
        }
    }
}
